package cn.swust.service;

import java.util.ArrayList;

import cn.swust.model.ProductBean;
import cn.swust.util.Pager;

public interface ProductService {
	/**
	 * 增加一个产品
	 * @param product
	 * @return
	 */
	public int addProduct(ProductBean product);
	/**
	 * 通过主键删除一件商品
	 * @param id
	 * @return
	 */
	public int delProduct(int id);
	/**
	 * 通过id重新编辑修改商品
	 * @param id
	 * @param product
	 * @return
	 */
	public int modProduct(int id,ProductBean product);
	
	/**
	 * 根据商品ID修改产品数量,根据flag判断加减，0为减，1为加
	 * @param id 产品ID号
	 * @param num  操作数量
	 * @return
	 */
	public int opeProduct(int id,int num,int flag);
	
	/**
	 * 通过id查询一件商品(但是不查询商品详情)
	 * @param id
	 * @return
	 */
	
	public ProductBean queryProById(int id);
	/**
	 *  通过id查询一件商品并将其详情查询出来
	 * @param id
	 * @return
	 */
	public ProductBean queryProMoreById(int id);
	/**
	 * 查询所有的产品
	 * @param page
	 * @param sort 排序
	 * @return
	 */
	public ArrayList<ProductBean> queryAllPro(Pager pager,int sort);
	/**
	 * 通过商品分类查询(-1则查询所有)
	 * @param type
	 * @param pager
	 * @param sort 排序方式
	 * @return
	 */
	public ArrayList<ProductBean> queryAllProByClass(int type,Pager pager,int sort);
	/**
	 * 用户关键词搜索 ，排序方式
	 * @param keyWord
	 * @param sort
	 * @return
	 */
	public ArrayList<ProductBean> queryPartProByWord(String keyWord,String sort,int pageSize,int nowPage);
	
	/**
	 * 用户关键词搜索结果
	 * @param keyWord
	 */
	public int getCountByKey(String keyWord);
	
	/**
	 * 查询最近入库的count条记录
	 * @param count
	 * @return
	 */
	public ArrayList<ProductBean> queryLastProByTime(int count);
	
	/**
	 * 获得给定的type的记录总数量（为0则查询所有）
	 * @param type表示商品分类，0表示从所有的商品中查询
	 * @return
	 */
	public int getListNum(int type);
	
	/**
	 * 根据输入的sql语句条件查询该条件的产品
	 * @param partSql
	 * @param pager
	 * @return
	 */
	public ArrayList<ProductBean> querySql(String partSql,Pager pager);
	
	/**
	 * 根据传入的sql语句条件返回符合条件的总数
	 * @param partSql
	 * @return
	 */
	public int getCountCondition(String partSql);
	/**
	 * 前台条件检索
	 * @param pageSize
	 * @param nowPage
	 * @param type 分类
	 * @param sort 排序方式 默认根据金币价格
	 * @return
	 */
	public ArrayList<ProductBean> queryAllByCondtion(int pageSize,int nowPage,int type,String sort);
}
